package com.info.zhiduoduo.pay.sdk.zhaoshangbank.model.request.tradebulter.detail;

import com.fasterxml.jackson.annotation.JsonProperty;
import com.google.common.collect.Lists;
import com.info.zhiduoduo.pay.formbean.zhaoshangtradebulter.SubLedgerRefundFormBean;
import com.info.zhiduoduo.repository.entity.pay.PaymentMerchant;

import java.util.List;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.Accessors;

/**
 * ntoprdmrx1 (单记录)
 */
@Data
@AllArgsConstructor
@NoArgsConstructor
@Accessors(chain = true)
public class SubLedgerRefundInfo {

	/*
	*  {
                    "setnbr": "G41034S102AAAEJ",
                    "trxnbr": "G4103400000009C",
                    "trsamt": "18",
                    "bbknbr": "69",
                    "accnbr": "769900019310307",
                    "dumnbr": "00000",
                    "eptdat": "20201104",
                    "rpyacc": "769900002110408",
                    "rpynam": "CC",
                    "intflg": "N",
                    "intamt": "0",
                    "yurref": "1021000999960612143711187334",
                    "apdflg": "N"
                }
	* */


	/** 原交易套号  	setnbr	String(15)	Y */
	@JsonProperty("setnbr")
	private String setnbr;
	/** 原交易流水号	trxnbr	String(15)	Y */
	@JsonProperty("trxnbr")
	private String trxnbr;
	/** 交易金额    	trsamt	M	Y */
	@JsonProperty("trsamt")
	private String trsamt;
	/** 分行号      	bbknbr	String(2)	Y */
	@JsonProperty("bbknbr")
	private String bbknbr;
	/** 主账号      	accnbr	String(35)	Y */
	@JsonProperty("accnbr")
	private String accnbr;
	/** 记账子单元编号  	dumnbr	String(20)	Y */
	@JsonProperty("dumnbr")
	private String dumnbr;
	/** 退款日期    	eptdat	D	Y */
	@JsonProperty("eptdat")
	private String eptdat;
	/** 原付方账号  	rpyacc	String(35)	Y */
	@JsonProperty("rpyacc")
	private String rpyacc;
	/** 原付方名称  	rpynam	Z(200)	Y */
	@JsonProperty("rpynam")
	private String rpynam;
	/** 是否退息    	intflg	String(1)	Y	Y:退息，N：不退息 */
	@JsonProperty("intflg")
	private String intflg;
	/** 利息        	intamt	M	Y	退息时必须大于0，不退息时必须为0 */
	@JsonProperty("intamt")
	private String intamt;
	/** 用途        	nusage	Z(62)		本字段会记录在记账子单元交易的摘要中
	 为空默认为“资金原路返回交易” */
	private String nusage;
	/** 客户摘要    	busnar	Z(200)		 */
	private String busnar;
	/** 对方参考号  	yurref	String(30)	Y */
	@JsonProperty("yurref")
	private String yurref;
	/** 部分退款标志	bckflg	String(1)		Y：部分退款，N：全额退款
	 为空则默认为N：全额退款 */
	private String bckflg;
	/** 附加标志	apdflg	String(1)		可空
	 附加标志为Y，必须输入NTOPRDMRX2接口。如果原交易的付方地址为空，允许客户通过NTOPRDMRX2补录地址
	 */
	@JsonProperty("apdflg")
	private String apdflg;

	public static List<SubLedgerRefundInfo> ofList(SubLedgerRefundFormBean formBean, PaymentMerchant paymentMerchant) {
		List<SubLedgerRefundInfo> list = Lists.newArrayList();
		SubLedgerRefundInfo info = new SubLedgerRefundInfo().setSetnbr(formBean.getSetnbr())
				.setTrxnbr(formBean.getTrxnbr())
				.setTrsamt(formBean.getAmount())
				.setBbknbr(paymentMerchant.getBranchNumber())
				.setAccnbr(paymentMerchant.getBankCard())
				.setDumnbr(formBean.getLedgerNo())
				.setEptdat(formBean.getRefunDate())
				.setRpyacc(formBean.getRpyacc())
				.setRpynam(formBean.getRpynam())
				.setIntflg("N")
				.setIntamt("0")
				.setNusage("")
				.setBusnar(formBean.getBusnar())
				.setYurref(formBean.getYurref())
				.setBckflg(formBean.getBckflg())
				.setApdflg("");

		list.add(info);
		return list;
	}

}
